package com.tedu.service.Imp;

import com.tedu.dao.EmpDao;
import com.tedu.pojo.Emp;
import com.tedu.service.EmpService;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 实现下载业务
 */
@Service
public class EmpServiceImp implements EmpService {
    @Autowired
    private EmpDao empDao;

    /**
     * 获取下载模版
     */
    public void EmpTable(HttpServletResponse response) throws Exception {

        HSSFWorkbook workbook = new HSSFWorkbook();
        exportExcel(workbook);
        response.setHeader("Content-type", "application/vnd.ms-excel");

        // 解决导出文件名中文乱码
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-Disposition", "attachment;filename=" + new String("Emp表".getBytes("UTF-8"), "ISO-8859-1") + ".xls");
        workbook.write(response.getOutputStream());
    }

    //导入为模版
    private void exportExcel(HSSFWorkbook workbook) throws Exception {
        //获取Emp表在数据库中的数据
        List<Emp> emp = empDao.findEmp();
        //创建创建sheet
        HSSFSheet sheet = workbook.createSheet("emp");

        //创建单元格样式
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index);

        //设置首行标题标题
        //创建第0行
        HSSFRow headerRow = sheet.createRow(0);
        headerRow.createCell(0).setCellStyle(cellStyle);
        headerRow.createCell(0).setCellValue("ID");
        headerRow.createCell(1).setCellStyle(cellStyle);
        headerRow.createCell(1).setCellValue("姓名");
        headerRow.createCell(2).setCellStyle(cellStyle);
        headerRow.createCell(2).setCellValue("工资");
        headerRow.createCell(3).setCellStyle(cellStyle);
        headerRow.createCell(3).setCellValue("年龄");

        HSSFRow row = null;
        //创建表
        int i = 1;
        for (Emp emp1 : emp) {
            //创建第i行
            row = sheet.createRow(i++);
            // 创建下标为0的Cell，并将其值设为查询结果中的编号
            row.createCell(0).setCellStyle(cellStyle);
            row.createCell(0).setCellValue(emp1.getID());
            // 创建下标为1的Cell，并将其值设为查询结果中的名字
            row.createCell(1).setCellStyle(cellStyle);
            row.createCell(1).setCellValue(emp1.getName());
            // 创建下标为2的Cell，并将其值设为查询结果中的工资
            row.createCell(2).setCellStyle(cellStyle);
            row.createCell(2).setCellValue(emp1.getSalary());
            // 创建下标为3的Cell，并将其值设为查询结果中的年龄
            row.createCell(3).setCellStyle(cellStyle);
            row.createCell(3).setCellValue(emp1.getAge());
        }

    }
}
